package com.vhall.component.dao.goods;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.vhall.component.entity.goods.LiveGoodsStatsEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;

/**
 * @author guoxin.wang
 * @date 2021-10-12
 */
@Mapper
@Repository
public interface LiveGoodsStatsMapper extends BaseMapper<LiveGoodsStatsEntity> {

    /**
     * 更新房间商品推屏统计信息
     *
     * @param id         统计信息id
     * @param duration   推屏时长 单位是秒 ;
     * @param updateTime 更新时间
     */
    @Update("update live_goods_stats set push_screen_num = push_screen_num + 1, duration = duration + #{duration}, updated_at = #{updateTime} where id=#{id}")
    void incrPushScreenAndDuration(@Param("id") int id, @Param("duration") int duration,
                                   @Param("updateTime") LocalDateTime updateTime);

    /**
     * 房间商品统计信息PV和UV自增1
     *
     * @param id         统计信息id
     * @param updateTime 更新时间
     */
    @Update("update live_goods_stats set pv_num= pv_num + 1, uv_num = uv_num + 1, updated_at = #{updateTime} where id=#{id}")
    void incrPvAndUv(@Param("id") int id, @Param("updateTime") LocalDateTime updateTime);

    /**
     * 房间商品统计信息PV和UV自增1
     *
     * @param id         统计信息id
     * @param updateTime 更新时间
     */
    @Update("update live_goods_stats set pv_num= pv_num + 1, updated_at = #{updateTime} where id=#{id}")
    void incrPv(@Param("id") Integer id, @Param("updateTime") LocalDateTime updateTime);
}

